package com.zaoqi.controller;

import com.zaoqi.pojo.PageBean;
import com.zaoqi.pojo.Result;
import com.zaoqi.pojo.User;
import com.zaoqi.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/users")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 分页查询用户列表
     * @param pageNum  当前页码（默认为1）
     * @param pageSize 每页显示的条数（默认为5）
     * @param username 按用户名筛选（可选）
     * @return 分页数据封装
     */
    @GetMapping
    public Result getAllUsers(
            @RequestParam(defaultValue = "1") int pageNum,
            @RequestParam(defaultValue = "5") int pageSize,
            @RequestParam(required = false) String username) {
        try {
            PageBean users = userService.getUsers(pageNum, pageSize, username);
            return Result.success(users);
        } catch (Exception e) {
            return Result.error("查询用户失败：" + e.getMessage());
        }
    }

    /**
     * 创建新用户
     * @param user  用户信息
     * @param token 管理员认证 token
     * @return 操作结果
     */
    @PostMapping
    public Result createUser(@RequestBody User user, @RequestHeader("Authorization") String token) {
        if (!userService.isAdmin(token)) {
            return Result.error("权限不足，无法创建用户");
        }
        try {
            userService.createUser(user);
            return Result.success(user);
        } catch (Exception e) {
            return Result.error("创建用户失败：" + e.getMessage());
        }
    }

    /**
     * 删除用户
     * @param username 用户名
     * @param token    管理员认证 token
     * @return 操作结果
     */
    @DeleteMapping("/{username}")
    public Result deleteUser(@PathVariable String username, @RequestHeader("Authorization") String token) {
        if (!userService.isAdmin(token)) {
            return Result.error("权限不足，无法删除用户");
        }
        try {
            boolean deleted = userService.deleteUserByUsername(username);
            if (deleted) {
                return Result.success("用户及其所有权限删除成功");
            } else {
                return Result.error("删除失败：用户不存在");
            }
        } catch (Exception e) {
            return Result.error("删除用户失败：" + e.getMessage());
        }
    }
}
